home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Diamond Collection / The Diamond Collection (Software Vault)(Digital Impact).ISO / cdr31 / ntb_21d1.zip / SETUP.MST < prev    next >
Text File  |  1995-03-14  |  11KB  |  478 lines

  1. '**************************************************************************
  2. '                 HawkNet Inc. NetTune Setup
  3. '**************************************************************************
  4.  
  5. '$INCLUDE 'setupapi.inc'
  6. '$INCLUDE 'msdetect.inc'    ''Detects Avalilable Disk Space
  7.  
  8. ''Dialog ID's
  9. CONST WELCOME     = 100
  10. CONST ASKQUIT     = 200
  11. CONST DESTPATH    = 300
  12. CONST EXITFAILURE = 400
  13. CONST EXITQUIT    = 600
  14. CONST EXITSUCCESS = 700
  15. CONST APPHELP     = 900
  16. CONST RESTART     = 1000
  17. CONST CUSTINST    = 6200
  18. CONST TOOBIG      = 6300
  19. CONST BADPATH     = 6400
  20.  
  21. '' window sizing
  22. CONST WS_VISIBLE       = &H10000000
  23. CONST WS_CAPTION       = &H00C00000 
  24. CONST WS_CLIPCHILDREN  = &H02000000
  25. CONST WS_SYSMENU       = &H00080000
  26. CONST WS_MINIMIZEBOX   = &H00020000
  27. CONST WS_MAXIMIZEBOX   = &H00010000
  28. CONST WS_THICKFRAME    = &H00040000
  29. CONST GWL_STYLE        = -16
  30. CONST SW_SHOWMAXIMIZED = 3
  31.  
  32. '' File TYPES
  33. CONST OPTFILES1 = 1
  34. CONST OPTFILES2 = 2
  35.  
  36. ''Bitmap ID
  37. CONST INSTALL = 1
  38. '' HawkNet Bitmap
  39. CONST HNLOGO = 2
  40.  
  41. '' File set symbol names
  42. GLOBAL OPT1NEEDS$ 
  43. GLOBAL OPT2NEEDS$ 
  44. GLOBAL EXTRACOSTS$  
  45. GLOBAL BIGLIST$     
  46.  
  47. GLOBAL DRIVETEXT$
  48. GLOBAL NTDEST$      
  49. GLOBAL WINDRIVE$    
  50. GLOBAL GROUP$        
  51. GLOBAL ITEM$        
  52. GLOBAL ITME2$
  53. GLOBAL ITEM3$
  54. GLOBAL ITEM4$
  55. GLOBAL EXE$            
  56. GLOBAL EXE2$            
  57. GLOBAL EXE3$            
  58. GLOBAL EXE4$            
  59. GLOBAL SRCDIR$ 
  60. GLOBAL WINDIR$ 
  61. GLOBAL SETUPDIR$
  62.  
  63. DECLARE SUB AddOptFilesToCopyList (ftype%)
  64. DECLARE SUB RecalcOptFiles (ftype%)
  65. DECLARE SUB RecalcPath
  66. DECLARE SUB SetDriveStatus
  67. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  68. DECLARE FUNCTION ShowWindow LIB  "user.exe" (hWnd%, iShow%) AS INTEGER
  69. DECLARE FUNCTION SetWindowLong LIB "user.exe" (hWnd%, offset%, style&) AS LONG
  70.  
  71.  
  72. INIT:
  73.  
  74.     CUIDLL$   = "mscuistf.dll"          ''Custom user interface dll
  75.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  76.  
  77.  
  78.     ''
  79.     '' Initialize window
  80.     ''
  81.  
  82.     hWnd% = HwndFrame()
  83.     k&    = SetWindowLong(hWnd%, GWL_STYLE, WS_CAPTION+WS_VISIBLE+WS_CLIPCHILDREN+WS_SYSMENU+WS_MINIMIZEBOX+WS_MAXIMIZEBOX+WS_THICKFRAME)
  84.     j%    = ShowWindow(hWnd%, SW_SHOWMAXIMIZED)                                            
  85.                                                                                            
  86.  
  87.     ''
  88.     '' Check Windows Version Number
  89.     ''
  90.  
  91.     MajorVer% = GetWindowsMajorVersion()
  92.     MinorVer% = GetWindowsMinorVersion()
  93.     IF  MajorVer% < 3 OR (MajorVer% = 3 AND MinorVer% < 10) THEN
  94.     i% = DoMsgBox("Microsoft Windows version 3.10 or greater is required for this software.  Please upgrade your version of Windows.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  95.         END
  96.     END IF
  97.  
  98.     ''
  99.     '' Setup globals
  100.     ''
  101.                                                                                
  102.     SetBitmap CUIDLL$, INSTALL
  103.     SetTitle "McAfee Associates, Inc."
  104.  
  105.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  106.     IF szInf$ = "" THEN
  107.         szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  108.     END IF
  109.  
  110.     ReadInfFile szInf$
  111.  
  112.     SRCDIR$    = GetSymbolValue("STF_SRCDIR")
  113.  
  114.     WINDIR$    = GetWindowsDir()
  115.  
  116.     WINDRIVE$  = MID$(WINDIR$, 1, 1)
  117.  
  118.     NTDEST$    = WINDRIVE$ + ":\NETTUNE"
  119.  
  120.     EXE$       = "NETTUNE.EXE"
  121.     EXE2$      = "NETTUNE.WRI"
  122.     EXE3$      = "NETTUNE.HLP"
  123.     EXE4$      = "WIZARD.HLP"
  124.  
  125.     GROUP$     = "McAfee"
  126.  
  127.     ITEM$      = "NetTune"
  128.     ITEM2$     = "NetTune ReadMe"
  129.     ITEM3$     = "NetTune Help"
  130.     ITEM4$     = "NetTune Advisor"
  131.  
  132.  
  133.     SETUPDIR$  = WINDRIVE$ + ":\~hawknet.t"
  134.  
  135.     '' list symbols
  136.     DRIVETEXT$   = "DriveStatusText"
  137.  
  138.     FOR i% = 1 TO 3 STEP 1
  139.         AddListItem DRIVETEXT$, ""
  140.     NEXT i%
  141.  
  142.     ReplaceListItem DRIVETEXT$, 3, NTDEST$
  143.  
  144.     ''Disk cost list symbols
  145.     OPT1NEEDS$     = "OptNeeds1"
  146.     OPT2NEEDS$     = "OptNeeds2"
  147.     EXTRACOSTS$ = "ExtraCosts"
  148.     BIGLIST$    = "BigList"
  149.  
  150.     FOR i% = 1 TO 2 STEP 1
  151.         AddListItem BIGLIST$, ""
  152.     NEXT i%
  153.     FOR i% = 1 TO 26 STEP 1
  154.         AddListItem EXTRACOSTS$, "0"
  155.     NEXT i%
  156.  
  157.     SetRestartDir SETUPDIR$
  158.  
  159. ''    RecalcPath
  160.  
  161. ''    SetDriveStatus
  162.  
  163. WELCOME:
  164.  
  165.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  166.     IF sz$ = "CONTINUE" THEN
  167.         UIPop 1
  168.     ELSE
  169.         GOSUB ASKQUIT
  170.         GOTO WELCOME
  171.     END IF
  172.  
  173.     RecalcPath
  174.  
  175.     SetDriveStatus
  176.  
  177.  
  178.  
  179. CUSTINST:
  180.  
  181.     sz$ = UIStartDlg(CUIDLL$, CUSTINST, "FCustInstDlgProc", APPHELP, HELPPROC$)
  182.  
  183.     IF sz$ = "CONTINUE" THEN
  184.         ''Install only if it will fit.
  185.         FOR i% = 1 TO 2 STEP 1
  186.             IF GetListItem(BIGLIST$, i%) <> "" THEN
  187.                 GOSUB TOOBIG
  188.                 GOTO CUSTINST
  189.             END IF
  190.         NEXT i%
  191.         UIPop 1
  192.         GOTO INSTALL    
  193.         
  194.     ELSEIF sz$ = "PATH" THEN        
  195.         GOTO GETPATH        
  196.  
  197.     ELSEIF sz$ = "REACTIVATE" THEN        
  198.         RecalcPath
  199.         SetDriveStatus
  200.         GOTO CUSTINST
  201.     ELSE
  202.         GOSUB ASKQUIT
  203.         GOTO CUSTINST        
  204.     END IF        
  205.         
  206. INSTALL:
  207.  
  208.     ClearCopyList
  209.  
  210.     AddOptFilesToCopyList OPTFILES1
  211.     AddOptFilesToCopyList OPTFILES2
  212.  
  213.     CreateDir NTDEST$, cmoNone
  214.  
  215.     CopyFilesInCopyList
  216.  
  217.     CreateProgmanGroup GROUP$, "", cmoNone
  218.  
  219.     CreateProgmanItem GROUP$, ITEM$,  MakePath(NTDEST$, EXE$), "", cmoOverwrite
  220.     CreateProgmanItem GROUP$, ITEM2$, "WRITE.EXE " + MakePath(NTDEST$, EXE2$), "", cmoOverwrite
  221.     CreateProgmanItem GROUP$, ITEM3$, "WINHELP.EXE " + MakePath(NTDEST$,EXE3$),"", cmoOverwrite
  222.     CreateProgmanItem GROUP$, ITEM4$, "WINHELP.EXE " + MakePath(NTDEST$,EXE4$),"", cmoOverwrite
  223.  
  224.     CreateIniKeyValue "WIN.INI", "NetTune", "NetTuneHome", NTDEST$,  cmoOverwrite
  225.  
  226. QUIT:
  227.  
  228.     ON ERROR GOTO ERRQUIT
  229.  
  230.     IF ERR = 0 THEN
  231.        dlg% = EXITSUCCESS
  232.     ELSEIF ERR = STFQUIT THEN
  233.         dlg% = EXITQUIT
  234.     ELSE
  235.         dlg% = EXITFAILURE
  236.     END IF
  237.  
  238. QUITL1:
  239.  
  240.     '' HawkNet Bitmap
  241.     ''SetBitmap CUIDLL$, HNLOGO
  242.  
  243.     n% = RestartListEmpty()
  244.  
  245.     IF n% = 1 THEN
  246.         
  247.         sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  248.  
  249.         IF sz$ = "REACTIVATE" THEN
  250.             GOTO QUITL1
  251. ''        ELSEIF sz$ = "BACK" THEN
  252. ''            chdir NTDEST$    
  253. ''            Run MakePath(NTDEST$, EXE$), NOWAIT 
  254.         END IF
  255.  
  256.     ELSE
  257.  
  258.         dlg% = RESTART
  259.  
  260.         sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  261.  
  262.         n% = ExitExecRestart()
  263.  
  264.     END IF
  265.  
  266.     UIPop 1
  267.  
  268.     END
  269.  
  270. ERRQUIT:
  271.  
  272.     i% = DoMsgBox("Setup sources were corrupted, call (619) 929-9966!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  273.     END
  274.  
  275. ''
  276. '' ASKQUIT
  277. ''
  278. ASKQUIT:
  279.  
  280.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  281.  
  282.     IF sz$ = "EXIT" THEN
  283.         UIPopAll
  284. ''        ERROR STFQUIT
  285.         END
  286.     ELSEIF sz$ = "REACTIVATE" THEN
  287.         GOTO ASKQUIT
  288.     ELSE
  289.         UIPop 1
  290.     END IF
  291.     RETURN
  292.  
  293. ''
  294. '' TOOBIG
  295. ''
  296. TOOBIG:
  297.  
  298.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  299.     IF sz$ = "REACTIVATE" THEN
  300.         GOTO TOOBIG
  301.     END IF
  302.     UIPop 1
  303.     RETURN
  304.  
  305.  
  306. BADPATH:
  307.  
  308.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  309.     IF sz$ = "REACTIVATE" THEN
  310.         GOTO BADPATH
  311.     END IF
  312.     UIPop 1
  313.     RETURN
  314.  
  315. ''
  316. '' GETPATH
  317. ''
  318. '' Get destination path
  319. ''
  320. GETPATH:
  321.  
  322.     SetSymbolValue "EditTextIn", NTDEST$
  323.     SetSymbolValue "EditFocus", "END"
  324.  
  325. GETPATHL1:
  326.  
  327.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  328.  
  329.     IF sz$ = "CONTINUE" THEN
  330.         olddest$ = NTDEST$
  331.         NTDEST$ = GetSymbolValue("EditTextOut")
  332.  
  333.         ''Validate new path.
  334.         IF IsDirWritable(NTDEST$) = 0 THEN
  335.             GOSUB BADPATH
  336.             GOTO GETPATHL1
  337.         END IF
  338.         UIPop 1
  339.  
  340.         ''Truncate display if too long.
  341.         IF LEN(NTDEST$) > 23 THEN
  342.             ReplaceListItem DRIVETEXT$, 3, MID$(NTDEST$, 1, 23)+"..."
  343.         ELSE
  344.             ReplaceListItem DRIVETEXT$, 3, NTDEST$
  345.         END IF
  346.  
  347.         ''Recalc if path changed.
  348.         IF (olddest$ <> NTDEST$) AND (olddest$ <> NTDEST$+"\") AND (olddest$+"\" <> NTDEST$) THEN
  349.             RecalcPath
  350.             SetDriveStatus
  351.         END IF
  352.  
  353.         olddest$ = ""
  354.         GOTO CUSTINST
  355.     ELSEIF sz$ = "REACTIVATE" THEN
  356.         RecalcPath
  357.         SetDriveStatus
  358.         GOTO GETPATHL1
  359.     ELSEIF sz$ = "EXIT" THEN
  360.         GOSUB ASKQUIT
  361.         GOTO GETPATHL1
  362.     ELSE
  363.         UIPop 1
  364.         GOTO CUSTINST
  365.     END IF
  366.  
  367. ''
  368. '' MakePath
  369. ''
  370. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  371.  
  372.     IF szDir$ = "" THEN
  373.         MakePath = szFile$
  374.     ELSEIF szFile$ = "" THEN
  375.         MakePath = szDir$
  376.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  377.         MakePath = szDir$ + szFile$
  378.     ELSE
  379.         MakePath = szDir$ + "\" + szFile$
  380.     END IF
  381.  
  382. END FUNCTION
  383.  
  384. ''
  385. '' AddOptFilesToCopyList
  386. ''
  387. SUB AddOptFilesToCopyList (ftype%) STATIC
  388.  
  389.     IF ftype% = OPTFILES1 THEN
  390.         AddSectionFilesToCopyList "NTEXE",   SRCDIR$, NTDEST$
  391.     ELSEIF ftype% = OPTFILES2 THEN
  392.         AddSectionFilesToCopyList "NWDLLS",   SRCDIR$, WINDIR$
  393.     END IF
  394.  
  395. END SUB
  396.  
  397.  
  398. ''
  399. '' RecalcOptFiles
  400. ''
  401. SUB RecalcOptFiles (ftype%) STATIC
  402.  
  403.     CursorSave% = ShowWaitCursor()
  404.  
  405.     ClearCopyList
  406.  
  407.     AddOptFilesToCopyList ftype%
  408.  
  409.     fExtra% = 0
  410.  
  411.     IF ftype% = OPTFILES1 THEN
  412.         ListSym$ = OPT1NEEDS$
  413.     ELSEIF ftype% = OPTFILES2 THEN
  414.         ListSym$ = OPT2NEEDS$
  415.     END IF
  416.  
  417.     StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  418.   
  419.     cost& = 0
  420.  
  421.     FOR i% = 1 TO 26 STEP 1
  422.         cost&  = cost& + VAL(GetListItem(ListSym$, i%))
  423.     NEXT i%
  424.  
  425.     IF StillNeed& > 0 THEN
  426.         ReplaceListItem BIGLIST$, ftype%, "YES"
  427.     ELSE
  428.         ReplaceListItem BIGLIST$, ftype%, ""
  429.     END IF
  430.  
  431.     IF fExtra% THEN
  432.         ReplaceListItem EXTRACOSTS$, ndrive%, "0"
  433.     END IF
  434.  
  435.     RestoreCursor CursorSave%
  436.  
  437.     ListSym$ = ""
  438.  
  439. END SUB
  440.  
  441.  
  442. ''
  443. '' RecalcPath
  444. ''
  445. '' Calculate the amount of disk space need for the installation
  446. ''
  447. SUB RecalcPath STATIC
  448.  
  449.     CursorSave% = ShowWaitCursor()
  450.  
  451.     RecalcOptFiles OPTFILES1
  452.     RecalcOptFiles OPTFILES2
  453.  
  454.     RestoreCursor CursorSave%
  455.  
  456. END SUB
  457.  
  458. ''
  459. '' SetDriveStatus
  460. ''
  461. '' Determine the amount of available space and the amount needed for
  462. '' this installation.
  463. ''
  464. SUB SetDriveStatus STATIC
  465.  
  466.     drive$   = MID$(NTDEST$, 1, 1)
  467.     ndrive%  = ASC(ucase$(drive$)) - ASC("A") + 1
  468.  
  469.     cost& = VAL(GetListItem(OPT1NEEDS$,ndrive%))+VAL(GetListItem(OPT2NEEDS$,ndrive%))
  470.  
  471.     free& = GetFreeSpaceForDrive(drive$)
  472.  
  473.     ReplaceListItem DRIVETEXT$, 1, STR$(cost& / 1024) + " K"
  474.     ReplaceListItem DRIVETEXT$, 2, STR$(free& / 1024) + " K"
  475.     ReplaceListItem DRIVETEXT$, 3, NTDEST$
  476. END SUB
  477.  
  478.